home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / make-ssl-cert < prev    next >
Text File  |  2009-07-07  |  3KB  |  100 lines

  1. #!/bin/bash -e
  2. # This is a mockup of a script to produce a snakeoil cert
  3. # The aim is to have a debconfisable ssl-certificate script
  4.  
  5. . /usr/share/debconf/confmodule
  6. db_version 2.0
  7. db_capb backup
  8.  
  9. ask_via_debconf() {
  10.     db_settitle make-ssl-cert/title
  11.  
  12.     RET=""
  13.     while [ "x$RET" = "x" ]; do
  14.     db_fset make-ssl-cert/hostname seen false
  15.     db_input high make-ssl-cert/hostname || true
  16.     db_go
  17.     db_get make-ssl-cert/hostname
  18.     done
  19.     
  20.     db_get make-ssl-cert/hostname
  21.     HostName="$RET"
  22.     db_fset make-ssl-cert/hostname seen false
  23. }
  24.  
  25. make_snakeoil() {
  26.     if ! HostName="$(hostname -f)" ; then
  27.         HostName="$(hostname)"
  28.         echo make-ssl-cert: Could not get FQDN, using \"$HostName\".
  29.         echo make-ssl-cert: You may want to fix your /etc/hosts and/or DNS setup and run
  30.         echo make-ssl-cert: 'make-ssl-cert generate-default-snakeoil --force-overwrite'
  31.         echo make-ssl-cert: again.
  32.     fi
  33. }
  34.  
  35. create_temporary_cnf() {
  36.     sed -e s#@HostName@#"$HostName"# $template > $TMPFILE
  37. }
  38.  
  39. # Takes two arguments, the base layout and the output cert.
  40.  
  41. if [ $# -lt 2 ] && [ "$1" != "generate-default-snakeoil" ]; then
  42.     printf "Usage: $0 template output [--force-overwrite]\n";
  43.     printf "Usage: $0 generate-default-snakeoil [--force-overwrite]\n";
  44.     exit 1;
  45. fi
  46.  
  47. if [ "$1" != "generate-default-snakeoil" ]; then
  48.     template="$1"
  49.     output="$2"
  50.     # be anal in manual mode.
  51.     if [ ! -f $template ]; then
  52.     printf "Could not open template file: $template!\n";
  53.     exit 1;
  54.     fi
  55.     if [ -f $output ] && [ "$3" != "--force-overwrite" ]; then
  56.         printf "$output file already exists!\n";
  57.         exit 1;
  58.     fi
  59.     ask_via_debconf
  60. else
  61.     template="/usr/share/ssl-cert/ssleay.cnf"
  62.     if [ -f "/etc/ssl/certs/ssl-cert-snakeoil.pem" ] && [ -f "/etc/ssl/private/ssl-cert-snakeoil.key" ]; then
  63.         if [ "$2" != "--force-overwrite" ]; then
  64.              exit 0
  65.         fi
  66.     fi
  67.     make_snakeoil
  68. fi
  69.  
  70. # # should be a less common char
  71. # problem is that openssl virtually accepts everything and we need to
  72. # sacrifice one char.
  73.  
  74. TMPFILE="$(mktemp)" || exit 1
  75.  
  76. create_temporary_cnf
  77.  
  78. # create the certificate.
  79.  
  80. if [ "$1" != "generate-default-snakeoil" ]; then
  81.     openssl req -config $TMPFILE -new -x509 -days 3650 -nodes -out $output -keyout $output > /dev/null 2>&1
  82.     chmod 600 $output
  83.     # hash symlink
  84.     cd $(dirname $output)
  85.     ln -sf $(basename $output) $(openssl x509 -hash -noout -in $(basename $output))
  86. else
  87.     openssl req -config $TMPFILE -new -x509 -days 3650 -nodes \
  88.     -out /etc/ssl/certs/ssl-cert-snakeoil.pem \
  89.         -keyout /etc/ssl/private/ssl-cert-snakeoil.key > /dev/null 2>&1
  90.     chmod 644 /etc/ssl/certs/ssl-cert-snakeoil.pem
  91.     chmod 640 /etc/ssl/private/ssl-cert-snakeoil.key
  92.     chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
  93.     # hash symlink
  94.     cd /etc/ssl/certs/
  95.     ln -sf ssl-cert-snakeoil.pem $(openssl x509 -hash -noout -in ssl-cert-snakeoil.pem)
  96. fi
  97.  
  98. # cleanup
  99. rm -f $TMPFILE
  100.